
if valgrind.found()
    valgrind_pyunit_wrapper = valgrind_common_wrapper + [
        '--suppressions=' + ( meson.current_source_dir() / 'valgrind.supp' ),
        '--show-leak-kinds=definite',
        '--errors-for-leak-kinds=definite',
    ]
    valgrind_pyunit_env = ['PYTHONMALLOC=malloc']

    if meson.version().version_compare('<0.57.0')
        add_test_setup('pyvalgrind',
                       env: valgrind_pyunit_env,
                       exe_wrapper: valgrind_pyunit_wrapper,
                       timeout_multiplier: 10)
    else
        add_test_setup('pyvalgrind',
                       exclude_suites: ['functional', 'unit', 'style'],
                       env: valgrind_pyunit_env,
                       exe_wrapper: valgrind_pyunit_wrapper,
                       timeout_multiplier: 10)
    endif
endif

python_tests_common = [
    'libvfio_user.py',
]

python_tests = [
    'test_destroy.py',
    'test_device_get_info.py',
    'test_device_get_irq_info.py',
    'test_device_get_region_info.py',
    'test_device_get_region_info_zero_size.py',
    'test_device_get_region_io_fds.py',
    'test_device_set_irqs.py',
    'test_dirty_pages.py',
    'test_dma_map.py',
    'test_dma_unmap.py',
    'test_irq_trigger.py',
    'test_migration.py',
    'test_negotiate.py',
    'test_pci_caps.py',
    'test_pci_ext_caps.py',
    'test_quiesce.py',
    'test_request_errors.py',
    'test_setup_region.py',
    'test_sgl_get_put.py',
    'test_vfu_create_ctx.py',
    'test_vfu_realize_ctx.py',
]

if get_option('shadow-ioeventfd')
    python_tests += 'test_shadow_ioeventfd.py'
endif

python_files = python_tests_common + python_tests

if pytest.found() and opt_sanitizers == 'none'
    foreach testname: python_tests
        test(testname,
             pytest,
             suite: 'pyunit',
             env: environment({'LIBVFIO_SO_DIR': libvfio_so_dir}),
             args: [files(testname)])
    endforeach
endif

if flake8.found()
    flake8_ignore = 'F405,F403,E128,E131,E127'
    test('flake8',
         flake8,
         suite: 'style',
         args: ['--extend-ignore', flake8_ignore,
                files(python_files)])
endif
